#include <iostream>
#include <string>
#include "server_socket.h"
#include "server_thread_aceptar.h"
#include <stdio.h>

using std::string;
using std::cout;
using std::endl;
using std::cin;

int main(int argc, char* argv[]) {
    try {
        bool esperar_stdin = true;
        bool correr = true;
        int port = 4321;
        Server_socket socket = Server_socket(port);
        Server_thread_aceptar thread_conexion = Server_thread_aceptar(&socket, &correr);
        if (socket.escuchar_puerto() == -1) {
            return -1;
        }
        //lanza hilo para aceptar conexiones con la funcion ejecutar() del Server_thread_aceptar.
        thread_conexion.iniciar();
        while (esperar_stdin == true) {
            string linea;
            getline(cin, linea);
            if (linea.compare("q") == 0) {
                esperar_stdin = false;
                correr = false; //avisa al bool del hilo de conexiones:
                socket.cerrar_comunicacion();
                thread_conexion.join();
                socket.cerrar();
            }
        }
    } catch (const char* e) {
        cout << "Mensaje de Excepcion: " << e << endl;
        return 0;
    }
    return 0;
}
